{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "nbsphinx": "hidden"
   },
   "source": [
    "# Random Signals and LTI-Systems\n",
    "\n",
    "*This jupyter notebook is part of a [collection of notebooks](../index.ipynb) on various topics of Digital Signal Processing. Please direct questions and suggestions to [Sascha.Spors@uni-rostock.de](mailto:Sascha.Spors@uni-rostock.de).*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Auto-Correlation Function\n",
    "\n",
    "The auto-correlation function (ACF) $\\varphi_{yy}[\\kappa]$ of the output signal of an LTI system $y[k] = \\mathcal{H} \\{ x[k] \\}$ is derived. It is assumed that the input signal is a wide-sense stationary (WSS) real-valued random process and that the LTI system has a real-valued impulse repsonse $h[k] \\in \\mathbb{R}$. \n",
    "\n",
    "Introducing the output relation $y[k] = h[k] * x[k]$ of an LTI system into the definition of the ACF and rearranging terms yields\n",
    "\n",
    "\\begin{equation}\n",
    "\\begin{split}\n",
    "\\varphi_{yy}[\\kappa] &= E \\{ y[k+\\kappa] \\cdot y[k] \\} \\\\\n",
    "&= E \\left\\{  \\sum_{\\mu = -\\infty}^{\\infty} h[\\mu] \\; x[k+\\kappa-\\mu] \\cdot \n",
    "\\sum_{\\nu = -\\infty}^{\\infty} h[\\nu] \\; x[k-\\nu] \\right\\} \\\\\n",
    "&= \\underbrace{h[\\kappa] * h[-\\kappa]}_{\\varphi_{hh}[\\kappa]} * \\varphi_{xx}[\\kappa]\n",
    "\\end{split}\n",
    "\\end{equation}\n",
    "\n",
    "where the ACF $\\varphi_{hh}[\\kappa]$ of the deterministic impulse response $h[k]$ is commonly termed as *filter ACF*. This is related to the [link between ACF and convolution](../random_signals/correlation_functions.ipynb#Definition). The relation above is known as the *Wiener-Lee theorem*. It states that the ACF of the output $\\varphi_{yy}[\\kappa]$ of an LTI system is given by the convolution of the input signal's ACF $\\varphi_{xx}[\\kappa]$ with the filter ACF $\\varphi_{hh}[\\kappa]$. For a system which just attenuates the input signal $y[k] = A \\cdot x[k]$ with $A \\in \\mathbb{R}$, the ACF at the output is given as $\\varphi_{yy}[\\kappa] = A^2 \\cdot \\varphi_{xx}[\\kappa]$.\n",
    "\n",
    "The [quadratic mean](../random_signals/ensemble_averages.ipynb#Quadratic-mean-(2nd-raw-moment)) $E\\{ y^2[k] \\}$, the avarage power of the output signal $y[k]$, is given by the ACF $\\varphi_{yy}[\\kappa]$ evaluated at $\\kappa = 0$\n",
    "\n",
    "\\begin{equation}\n",
    "E\\{ y^2[k] \\} = \\sigma_x^2 + \\mu_x^2 = \\varphi_{yy}[\\kappa] \\Big\\vert_{\\kappa = 0}\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Example - System Response to White Noise\n",
    "\n",
    "Let's assume that the wide-sense ergodic input signal $x[k]$ of an LTI system with impulse response $h[k] = \\text{rect}_N[k]$ is normal distributed white noise. Introducing $\\varphi_{xx}[\\kappa] = N_0\\, \\delta[\\kappa]$ and $h[k]$ into the Wiener-Lee theorem yields\n",
    "\n",
    "\\begin{equation}\n",
    "\\varphi_{yy}[\\kappa] = N_0 \\cdot \\varphi_{hh}[\\kappa] = N_0 \\cdot (\\text{rect}_N[\\kappa] * \\text{rect}_N[-\\kappa])\n",
    "\\end{equation}\n",
    "\n",
    "The example is evaluated numerically for $N_0 = 1$ and $N=5$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Estimated quadratic mean of output signal is 5.00\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1EAAAIjCAYAAADiGJHUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABHpUlEQVR4nO3deXxTVf7/8XegbdrSRcrWIqAF3KAismlREWSKoDIqrjg6uH3nC4qOgzqCfh3oDAriMjouOCqiPlBAR1EZFanDpiNgy76oo04VlVaWYlupLWl7fn/wa2xo2uakaZKmr+fjweNBbu7ySe+5N/ede3LiMMYYAQAAAAB80ibUBQAAAABAS0KIAgAAAAALhCgAAAAAsECIAgAAAAALhCgAAAAAsECIAgAAAAALhCgAAAAAsECIAgAAAAALhCgAAAAAsECIAgAAAAALhCgAAAAAsECIAhDWXnjhBTkcjnr/rVq1yud1ffzxx5oxY4Z+/PFHr9v4+uuvA1p7U2oKhBkzZsjhcFgt87e//U0Oh0MZGRkNzrd161Zdd911Sk9PV2xsrBISEjRgwADNmTNHRUVF7vka2n933HGHX6/Lm8WLF6tv376Ki4uTw+HQ5s2bA7buxjTnPgzG9kLZ/r0JdD3XXnutu815a9fFxcVq06aNHn30Ua/Lv/nmmx7tNi8vLyB1AWjZokJdAAD4Yv78+TrxxBPrTO/Tp4/P6/j444+VnZ2ta6+9VkcddZR7+vnnn6+1a9cqLS0tEKVaqa+mUHn++eclSTt27ND69et12mmn1Znn2Wef1U033aQTTjhBd955p/r06SOXy6W8vDw9/fTTWrt2rZYsWeKxjLf917Vr14DUvHfvXl1zzTUaPXq0nnrqKTmdTh1//PEBWbcvgr0PA729ULb/YElNTdWSJUsUHx9f57m8vDwZYzR48GCvy5599tlau3at3nnnHc2cObO5SwXQQhCiALQIGRkZGjRoULOsu1OnTurUqVOzrLslycvL05YtW3T++efrnXfe0bx58+qEqLVr12rSpEnKysrSm2++KafT6X4uKytLt99+u5YtW1Zn3c25//7zn//I5XLp6quv1tlnn90s24hkraH9O51OnX766V6fy8vLU1RUlAYMGOD1+fbt2+v000/XZ5991pwlAmhh6M4HICLs3btXv/vd79S9e3c5nU516tRJZ5xxhj744ANJh7u23XnnnZKk9PR0j+6A3roP1XSF27p1qy677DIlJycrJSVFU6ZMUWVlpT7//HONHj1aiYmJOvbYYzVnzhyPer788ktdd911Ou644xQfH6+jjz5aY8eO1bZt2zy2UV9NNb744gtdddVV6ty5s5xOp0466SQ9+eSTdV7/O++8o/79+8vpdCo9PV0PPfSQ9d9w3rx5kqTZs2dr6NChWrRokcrKyjzmuf/+++VwOPTMM894BKgaMTEx+vWvf2297fp89NFHGjlypBITExUfH6+hQ4fqnXfecT9/7bXX6swzz5QkXXHFFXI4HBo+fHiT1lmz3mOPPbbOskd2kWxsH9bMv2nTJo0bN05JSUlKTk7W1Vdfrb179wZ8e940dmzU133urbfeUr9+/eR0OtWzZ0899thjXutxOBzasWOHxo8fr+TkZHXp0kXXX3+9iouLPdbnyzFhY9y4cerWrVud6ZWVlerfv7+ysrJ8Wk9ubq4yMjIUFxcnSTLG6K9//atiY2M1depUVVVV+VUfgMjGnSgALUJVVZUqKys9pjkcDrVt21aSdM0112jjxo267777dPzxx+vHH3/Uxo0btX//fknSjTfeqKKiIj3++ON644033F2X+vTp0+B3Ly6//HJdffXV+t///V/l5ORozpw5crlc+uCDD3TTTTfpjjvu0CuvvKK77rpLvXv31rhx4yRJu3fvVocOHTR79mx16tRJRUVFevHFF3Xaaadp06ZNOuGEExqsSZJ27typoUOHqkePHnr44YeVmpqq999/X7feeqv27dun6dOnS5L+9a9/6cILL1RmZqYWLVqkqqoqzZkzRz/88IPPf9+ff/5ZCxcu1ODBg5WRkaHrr79eN954o1577TVNmDDBvQ9WrFihgQMHqnv37j6vu2bZI/dfVFTDb0GrV69WVlaW+vXrp3nz5snpdOqpp57S2LFjtXDhQl1xxRW69957NWTIEN188826//77NWLECCUlJTVpnTYa24c1Lr74Yl1++eWaOHGiduzYoXvvvVc7d+7U+vXrFR0dHfDt1dbYseHNsmXLNG7cOA0bNkyLFy9WZWWlHnrooXrb1CWXXKIrrrhCN9xwg7Zt26Zp06ZJ+qV7qOTbMWFj2LBhWrJkib755hsdc8wx7umPPPKIPvvsM7322ms+rScvL0+jRo2SJO3bt0/XXnut1q1bpyVLlmjMmDFWNQFoRQwAhLH58+cbSV7/tW3b1j1fQkKCue222xpc14MPPmgkmfz8fK/bqD19+vTpRpJ5+OGHPebt37+/kWTeeOMN9zSXy2U6depkxo0bV++2KysrzaFDh8xxxx1n/vCHPzRakzHGnHvuuaZbt26muLjYY/rkyZNNbGysKSoqMsYYc9ppp5muXbuan3/+2T1PSUmJSUlJMb6e5l966SUjyTz99NPGGGNKS0tNQkKCOeuss9zzFBYWGknmyiuv9GmdxjS8/1wuV4PLnn766aZz586mtLTUPa2ystJkZGSYbt26merqamOMMStXrjSSzGuvvdZoPb6uc8KECeaYY46ps3xNu6itoX1YM3/tfW6MMS+//LKRZBYsWBDQ7XnT2LHhrf0PHjzYdO/e3VRUVLinlZaWmg4dOnjUU1PfnDlzPNZ50003mdjYWPff05v6jglv9XizYcMGI8m88sor7mn//e9/TXx8vPnzn//snlbf39YYY/bu3WskmWeffdasXr3aHH300eaMM84w3377bZ15a+rKzc1tsC4ArQPd+QC0CC+99JJyc3M9/q1fv979/JAhQ/TCCy9o5syZWrdunVwuV0C2e8EFF3g8Pumkk+RwODw+oY6KilLv3r31zTffuKdVVlbq/vvvV58+fRQTE6OoqCjFxMToiy++0KefftrodsvLy/Wvf/1LF198seLj41VZWen+d95556m8vFzr1q3TwYMHlZubq3Hjxik2Nta9fGJiosaOHevz65w3b57i4uJ05ZVXSpISEhJ02WWX6cMPP9QXX3zh83rq423/NXQn6uDBg1q/fr0uvfRSJSQkuKe3bdtW11xzjb777jt9/vnnVjU0xzp99Zvf/Mbj8eWXX66oqCitXLmyWbZXm+2xcfDgQeXl5emiiy5STEyMe3pCQkK9berILpz9+vVTeXm59uzZ457W1GPiSP3791dSUpL+/e9/u6dNmjRJ3bt311133eXTOnJzcyVJOTk5GjlypK666iqtWrXKazdBAKiNEAWgRTjppJM0aNAgj38DBw50P7948WJNmDBBzz33nDIzM5WSkqLf/va3KiwsbNJ2U1JSPB7HxMQoPj7eI7DUTC8vL3c/njJliu69915ddNFFWrp0qdavX6/c3Fydcsop+vnnnxvd7v79+1VZWanHH39c0dHRHv/OO+88SYe7Hh04cEDV1dVKTU2tsw5v07z58ssvtWbNGp1//vkyxujHH3/Ujz/+qEsvvVTSL12yOnbsqPj4eOXn5/u03tq87b+GHDhwQMYYryPG1Yzq11B3tGCt01dH7ouoqCh16NCh2bZXm+2xUfN36tKlS53nvE2TpA4dOng8rvm+XO223tRj4kht2rTR0KFD9fHHH0uSXn75Zb3//vt6+umnPcJfQ/Ly8hQbG6t3331Xw4YN05w5cxrtZgoAEt+JAhAhOnbsqEcffVSPPvqodu3apbfffltTp07Vnj17vI4W19wWLFig3/72t7r//vs9pu/bt8+nYanbt2/vvkNy8803e52n5jeaHA6H1wtiXwPk888/L2OM/vGPf+gf//hHnedffPFFzZw5U23bttXIkSP13nvv6bvvvmvWT+vbt2+vNm3aqKCgoM5zu3fvlnR4nzfXOmNjY1VRUVFnvn379llts0ZhYaGOPvpo9+PKykrt37/fHT4Cvb3abI+N9u3by+FweP3+U1M+lGjqMeHNsGHDdO+992rXrl2aMmWKJkyY0OjAIrXl5eXp1FNP1fTp03XBBRdo2rRpmjVrll+1AGhduBMFIOL06NFDkydPVlZWljZu3Oie7u3T8ebicDjqjF73zjvv6Pvvv/eYVl9N8fHxGjFihDZt2qR+/frVuYszaNAgdejQQe3atdOQIUP0xhtveNwJKy0t1dKlSxuts6qqSi+++KJ69eqllStX1vl3++23q6CgQO+9954kadq0aTLG6H/+53906NChOutzuVw+bbcx7dq102mnnaY33njD429TXV2tBQsWqFu3bta/BWWzzmOPPVZ79uzxCBKHDh3S+++/X2e9vrSrl19+2ePxq6++qsrKSvcFf6C3V5/6jo3a2rVrp0GDBunNN9/02Mc//fST/vnPf1pvs4avx4SNYcOGqaqqShdccIGqqqqsR6XMzc3VwIEDde655+rZZ5/V7NmzvY5+CQBH4k4UgBZh+/btdUZ3k6RevXopJiZGI0aM0FVXXaUTTzxRiYmJys3NdY8wVuPkk0+WJD322GOaMGGCoqOjrUcE89UFF1ygF154QSeeeKL69eunDRs26MEHH6xz96a+mhITE/XYY4/pzDPP1FlnnaVJkybp2GOPVWlpqb788kstXbpUK1askCT95S9/0ejRo92/01RVVaUHHnhA7dq1U1FRUYN1vvfee9q9e7ceeOABr5/gZ2Rk6IknntC8efN0wQUXKDMzU3PnztVNN92kgQMHatKkSerbt69cLpc2bdqkZ555RhkZGVbfx6rPrFmzlJWVpREjRuiOO+5QTEyMnnrqKW3fvl0LFy70GGo70Ou84oor9Kc//UlXXnml7rzzTpWXl+tvf/ub1+GuG9qHNd544w1FRUUpKyvLPTrfKaecossvv7xZtlejuLjYp2PjSH/+8591/vnn69xzz9Xvf/97VVVV6cEHH1RCQkKjbao+vh4TNgYPHqy4uDht27ZNzz//vNXdyYKCAhUUFLi7BV977bX67rvvdOuttyo1NVWXXHKJ33UBaAVCOaoFADSmodHd9P9H1SovLzcTJ040/fr1M0lJSSYuLs6ccMIJZvr06ebgwYMe65s2bZrp2rWradOmjZFkVq5c2eDofHv37vVYfsKECaZdu3Z16jz77LNN37593Y8PHDhgbrjhBtO5c2cTHx9vzjzzTPPhhx+as88+25x99tmN1lQjPz/fXH/99eboo4820dHRplOnTmbo0KFm5syZHut4++23Tb9+/UxMTIzp0aOHmT17tteR3Y500UUXmZiYGLNnz55657nyyitNVFSUKSwsdE/bvHmzmTBhgunRo4eJiYkx7dq1M6eeeqr505/+5LGupo5o9uGHH5pzzjnHtGvXzsTFxZnTTz/dLF261GMem9H5fF2nMca8++67pn///iYuLs707NnTPPHEE/X+TevbhzXzb9iwwYwdO9YkJCSYxMREM378ePPDDz8EfHtH8uXYqG80vCVLlpiTTz7Zo03deuutpn379u556jtOvK3T12PC19H5jDk8MmbXrl3NWWedVe9IgPWNzvfWW28ZSWbr1q0e03/3u9+Z2NhYs2bNGq+vidH5ABhjjMMYY4KW2AAAaEVmzJih7Oxs7d271/o7XOHG5XKpf//+Ovroo7V8+fJQlyNJeuihh3TPPfdo8+bNOumkk7zOc+2112rVqlX68ssvPX5bzlfGGFVVVemll17SDTfcoNzc3EYHRgEQ+ejOBwAA6rjhhhuUlZWltLQ0FRYW6umnn9ann36qxx57LKR1lZWVacuWLcrNzdU999yj++67r94AVeObb75RdHS0+vbtq+3bt1tt76233tLFF1/clJIBRCBCFAAAqKO0tFR33HGH9u7dq+joaA0Y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HeHBtg1I0u7duzV69GhddtlluvHGGz2eow20PP60gYbQBiLfkfuS/du60R5aj8mTJ2vr1q1auHBhnedoB5HthBNO0ObNm7Vu3TpNmjRJEyZM0M6dO93PB2L/RwWk0iCZPHmyrrzyygbnOfbYY93/79ixozp27Kjjjz9eJ510krp3765169YpMzNTqampWr9+vceyBw4ckMvlqpNOET5s28Du3bs1YsQIZWZm6plnnvGYjzbQMtm2gYbQBiJbx44d1bZt2zqfLu7Zs4f92wqlpqZKOnwnIi0tzT2d9hCZbrnlFr399ttas2aNunXr5p5OO2gdYmJi1Lt3b0nSoEGDlJubq8cee0x33XWXpMDs/xYVompCkT9q7kBVVFRIkjIzM3XfffepoKDA/Udcvny5nE6nBg4cGJiCEXA2beD777/XiBEjNHDgQM2fP19t2njeeKUNtExNOQ8ciTYQ2WJiYjRw4EDl5OTo4osvdk/PycnRhRdeGMLKEArp6elKTU1VTk6OTj31VEmHvze3evVqPfDAAyGuDoFijNEtt9yiJUuWaNWqVUpPT/d4nnbQOhljVFFREdj9H4gRL8LN+vXrzeOPP242bdpkvv76a7NixQpz5plnml69epny8nJjjDGVlZUmIyPDjBw50mzcuNF88MEHplu3bmby5Mkhrh6B8P3335vevXubc845x3z33XemoKDA/a8GbSDyffPNN2bTpk0mOzvbJCQkmE2bNplNmzaZ0tJSYwxtoDVYtGiRiY6ONvPmzTM7d+40t912m2nXrp35+uuvQ10amkFpaan7OJdkHnnkEbNp0ybzzTffGGOMmT17tklOTjZvvPGG2bZtmxk/frxJS0szJSUlIa4cgTJp0iSTnJxsVq1a5fHeX1ZW5p6HdhDZpk2bZtasWWPy8/PN1q1bzd13323atGljli9fbowJ3P6PyBC1detWM2LECJOSkmKcTqc59thjzcSJE813333nMd8333xjzj//fBMXF2dSUlLM5MmT3SELLdv8+fONJK//aqMNRLYJEyZ4bQMrV650z0MbiHxPPvmkOeaYY0xMTIwZMGCAe6hjRJ6VK1d6PeYnTJhgjDk8vPX06dNNamqqcTqdZtiwYWbbtm2hLRoBVd97//z5893z0A4i2/XXX+8+53fq1MmMHDnSHaCMCdz+dxhTa6QFAAAAAECDWtTofAAAAAAQaoQoAAAAALBAiAIAAAAAC4QoAAAAALBAiAIAAAAAC4QoAAAAALBAiAIAAAAAC4QoAAAAALBAiAIAAAAAC4QoAAAAALBAiAIAAAAAC4QoAEBE+vHHH+VwOPTvf/9bkvTll1/qhBNO0NSpU2WMCXF1AICWjBAFAIhIW7ZskcPhUL9+/fTRRx9p2LBhmjp1qmbPni2HwxHq8gAALVhUqAsAAKA5bNmyRb169dLSpUt1++2365VXXtGIESNCXRYAIAJwJwoAEJG2bNmiwsJCTZgwQZ07d9bw4cNDXRIAIEIQogAAEWnLli0aNGiQVq9erW3btun1118PdUkAgAjhMHy7FgAQYaqqqpSQkKDFixfr17/+tS6//HLt3LlTW7duVZs2fH4IAGga3kkAABHn888/V3l5ufr37y9J+tOf/qSdO3fq1VdfDW1hAICIQIgCAEScLVu26KijjlKPHj0kSRkZGRo3bpyys7NVVVUV4uoAAC0d3fkAAAAAwAJ3ogAAAADAAiEKAAAAACwQogAAAADAAiEKAAAAACwQogAAAADAAiEKAAAAACwQogAAAADAAiEKAAAAACwQogAAAADAAiEKAAAAACwQogAAAADAwv8D5sGFbL1rbkoAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "L = 10000  # number of samples\n",
    "K = 30  # limit for lags in ACF\n",
    "\n",
    "# generate input signal (white Gaussian noise)\n",
    "np.random.seed(2)\n",
    "x = np.random.normal(size=L)\n",
    "# compute system response\n",
    "y = np.convolve(x, [1, 1, 1, 1, 1], mode=\"full\")\n",
    "\n",
    "# compute and truncate ACF\n",
    "acf = 1 / len(y) * np.correlate(y, y, mode=\"full\")\n",
    "acf = acf[len(y) - K - 1 : len(y) + K - 1]\n",
    "kappa = np.arange(-K, K)\n",
    "\n",
    "# plot ACF\n",
    "plt.figure(figsize=(10, 6))\n",
    "plt.stem(kappa, acf)\n",
    "plt.title(\"Estimated ACF of output signal $y[k]$\")\n",
    "plt.ylabel(r\"$\\hat{\\varphi}_{yy}[\\kappa]$\")\n",
    "plt.xlabel(r\"$\\kappa$\")\n",
    "plt.axis([-K, K, 1.2 * min(acf), 1.1 * max(acf)])\n",
    "plt.grid()\n",
    "\n",
    "# print estimated quadratic mean\n",
    "print(f'Estimated quadratic mean of output signal is {np.mean(y**2):.2f}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise**\n",
    "\n",
    "* Derive the theoretic result for $\\varphi_{yy}[\\kappa]$ by calculating the filter-ACF $\\varphi_{hh}[\\kappa]$.\n",
    "* Why is the estimated ACF $\\hat{\\varphi}_{yy}[\\kappa]$ of the output signal not exactly equal to its theoretic result $\\varphi_{yy}[\\kappa]$?\n",
    "* Change the number of samples `L` and rerun the example. What changes?\n",
    "\n",
    "Solution: The filter-ACF is given by $\\varphi_{hh}[\\kappa] = \\text{rect}_N[\\kappa] * \\text{rect}_N[-\\kappa]$. The convolution of two rectangular signals $\\text{rect}_N[\\kappa]$ results in a triangular signal. Taking the time reversal into account yields\n",
    "\n",
    "\\begin{equation}\n",
    "\\varphi_{hh}[\\kappa] = \\begin{cases} \n",
    "N - |\\kappa| & \\text{for } -N < \\kappa \\leq N \\\\\n",
    "0 & \\text{otherwise}\n",
    "\\end{cases}\n",
    "\\end{equation}\n",
    "\n",
    "for even $N$. The estimated ACF $\\hat{\\varphi}_{yy}[\\kappa]$ differs from its theoretic value due to the statistical uncertainties when using random signals of finite length. Increasing its length `L` lowers the statistical uncertainties."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Cross-Correlation Function\n",
    "\n",
    "The cross-correlation functions (CCFs) $\\varphi_{xy}[\\kappa]$ and $\\varphi_{yx}[\\kappa]$ between the in- and output signal of an LTI system $y[k] = \\mathcal{H} \\{ x[k] \\}$ are derived. As for the ACF it is assumed that the input signal originates from a wide-sense stationary real-valued random process and that the LTI system's impulse response is real-valued, i.e. $h[k] \\in \\mathbb{R}$.\n",
    "\n",
    "Introducing the convolution into the definition of the CCF and rearranging the terms yields\n",
    "\n",
    "\\begin{equation}\n",
    "\\begin{split}\n",
    "\\varphi_{xy}[\\kappa] &= E \\{ x[k+\\kappa] \\cdot y[k] \\} \\\\\n",
    "&= E \\left\\{ x[k+\\kappa] \\cdot \\sum_{\\mu = -\\infty}^{\\infty} h[\\mu] \\; x[k-\\mu] \\right\\} \\\\\n",
    "&= \\sum_{\\mu = -\\infty}^{\\infty} h[\\mu] \\cdot E \\{ x[k+\\kappa] \\cdot x[k-\\mu] \\} \\\\\n",
    "&= h[-\\kappa] * \\varphi_{xx}[\\kappa]\n",
    "\\end{split}\n",
    "\\end{equation}\n",
    "\n",
    "The CCF $\\varphi_{xy}[\\kappa]$ between in- and output is given as the time-reversed impulse response of the system convolved with the ACF of the input signal. \n",
    "\n",
    "The CCF between out- and input is yielded by taking the symmetry relations of the CCF and ACF into account\n",
    "\n",
    "\\begin{equation}\n",
    "\\varphi_{yx}[\\kappa] = \\varphi_{xy}[-\\kappa] = h[\\kappa] * \\varphi_{xx}[\\kappa]\n",
    "\\end{equation}\n",
    "\n",
    "The CCF $\\varphi_{yx}[\\kappa]$ between out- and input is given as the impulse response of the system convolved with the ACF of the input signal. \n",
    "\n",
    "For a system which just attenuates the input signal $y[k] = A \\cdot x[k]$, the CCFs between input and output are given as $\\varphi_{xy}[\\kappa] = A \\cdot \\varphi_{xx}[\\kappa]$ and $\\varphi_{yx}[\\kappa] = A \\cdot \\varphi_{xx}[\\kappa]$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## System Identification by Cross-Correlation\n",
    "\n",
    "The process of determining the impulse response or transfer function of a system is referred to as *system identification*. The CCFs of an LTI system play an important role in the estimation of the impulse response $h[k]$ of an unknown system. This is illustrated in the following.\n",
    "\n",
    "The basic idea is to use a specific measurement signal as input signal to the system. Let's assume that the unknown LTI system is excited by [white noise](../random_signals/white_noise.ipynb). The ACF of the wide-sense stationary input signal $x[k]$ is then given as $\\varphi_{xx}[\\kappa] = N_0 \\cdot \\delta[\\kappa]$. According to the relation derived above, the CCF between out- and input for this special choice of the input signal becomes\n",
    "\n",
    "\\begin{equation}\n",
    "\\varphi_{yx}[\\kappa] = h[\\kappa] * N_0 \\cdot \\delta[\\kappa] = N_0 \\cdot h[\\kappa]\n",
    "\\end{equation}\n",
    "\n",
    "For white noise as input signal $x[k]$, the impulse response of an LTI system can be estimated by estimating the CCF between its out- and input signals. Using noise as measurement signal instead of a Dirac impulse is beneficial since its [crest factor](https://en.wikipedia.org/wiki/Crest_factor) is limited."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Example\n",
    "\n",
    "The application of the CCF to the identification of a system is demonstrated. The system is excited by wide-sense ergodic normal distributed white noise with $N_0 = 1$. The ACF of the in- and output, as well as the CCF between out- and input is estimated and plotted."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2AAAAE6CAYAAABwGDEcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA+b0lEQVR4nO3deXgUVdr38V+zZGFJY0CysCXgAhgQDIIB2UYIS2RwFAEZWRzgEcEFcAFEZNExKoq4gSJLZEC2GVS2R8mIBoTgsDMQRJwBApKALCYsEkhS7x886Zem00kn3V2d5fu5rr6u9OlTVXdVTlXXXXX6lMUwDEMAAAAAAK+r4OsAAAAAAKC8IAEDAAAAAJOQgAEAAACASUjAAAAAAMAkJGAAAAAAYBISMAAAAAAwCQkYAAAAAJiEBAwAAAAATEICBgAAAAAmIQEDAC9KSEiQxWJx+vruu+9cnteJEyc0ZcoU7d692+GzKVOmyGKxeC7wIkhJSdGUKVN05MgRj8+7OOv14IMPymKx6Mknnyyw3qZNm9S3b1/VqVNHfn5+slqtatu2rWbPnq2LFy/a6kVERDj9/124cKFY63WjI0eOKC4uTsHBwbJYLBo9erTTuhERERoyZIhHlusJ69at05QpUzw6z5K2jiUtHgClWyVfBwAA5cGCBQvUuHFjh/KmTZu6PI8TJ05o6tSpioiIUIsWLew+GzZsmLp37+5umMWSkpKiqVOnqlOnToqIiPBJDHlOnTqlNWvWSJIWL16st956SwEBAQ71Jk+erGnTpqlt27Z65ZVX1KhRI126dElbtmzRlClT9NNPP+mdd96x1W/Xrp3eeusth/lUqVLFI3GPGTNGP/zwg+bPn6/Q0FCFhYU5rfv5558rKCjII8v1hHXr1unDDz/0aBJW0tYRADyJBAwATBAVFaVWrVp5bf5169ZV3bp1vTb/0mLhwoW6evWq4uLitHbtWq1cuVIDBgywq7NixQpNmzZNQ4cO1SeffGJ3h61Hjx564YUXlJycbDdNjRo1dM8993gt7n379ql169Z64IEHCq3bsmVLr8VRUpSHdQRQftEFEQBKiBUrVqhNmzayWq2qUqWKGjZsqL/85S+SpO+++0533323JOmxxx6zdYHLu+uQX1e9iIgI3X///VqzZo1atmypwMBANWnSxHaHKCEhQU2aNFHVqlXVunVrbd++3W767du3q3///oqIiFBgYKAiIiL0yCOP6OjRo7Y6CQkJevjhhyVJnTt3tsWVkJBgq/PPf/5T9913n4KCglSlShW1a9dO33zzjcP6r127Vi1atJC/v78iIyPzveNUmPnz5yskJESffvqpAgMDNX/+fIc606ZN00033aT33nsv3+6N1atXV2xsbJGXnZ/U1FQ9+uijql27tvz9/dWkSRO9/fbbys3NlXTt/2qxWPTzzz/rf//3f23br6DunDd2h8ubx5IlSzRx4kSFh4crKChIXbp00cGDB+2m7dSpk6KiorRp0ybdc889CgwMVJ06dTRp0iTl5OQ4zPPGLrJHjhyx+/8OGTJEH374oSTZdc0sKP5du3bp/vvvt22T8PBwxcXF6fjx407XUZL279+v2NhYValSRTfffLNGjRqltWvXOsSZt47btm1T+/btbfvS66+/btvuknT58mU9++yzatGihaxWq4KDgxUTE6Mvv/zSaewA4AkkYABggpycHGVnZ9u9rj/hTU5OVr9+/dSwYUMtXbpUa9eu1csvv6zs7GxJ0l133aUFCxZIkl566SUlJycrOTlZw4YNK3C5e/bs0YQJEzRu3DitXLlSVqtVDz74oCZPnqy5c+fqtdde0+LFi5WRkaH7779fv//+u23aI0eO6Pbbb9fMmTP19ddf64033lBaWpruvvtunT59WpIUFxen1157TZL04Ycf2uKKi4uTJC1atEixsbEKCgrSp59+quXLlys4OFjdunWzS8K++eYb9e7dW9WrV9fSpUs1ffp0LV++3LbOrtiyZYsOHDigQYMGqWbNmnrooYe0YcMGHT582FYnLS1N+/bts53Iu8owDIf/3/Un8/n59ddf1bZtW61fv16vvPKKVq1apS5duui5556z/T7trrvuUnJyskJDQ9WuXTvb9iuoC6IzL774oo4ePaq5c+dqzpw5OnTokHr16mXXziQpPT1d/fv315///Gd9+eWX6tOnj1599VU988wzRV7mpEmT1KdPH0myxV5Q/BcvXlTXrl118uRJffjhh0pMTNTMmTNVv359nT9/3uly0tLS1LFjRx08eFCzZ8/WwoULdf78eae/80tPT9ef//xnPfroo1q1apV69OihCRMmaNGiRbY6WVlZOnv2rJ577jl98cUXWrJkie699149+OCDWrhwYZG3BQC4zAAAeM2CBQsMSfm+KlasaKv31ltvGZKM3377zem8tm3bZkgyFixY4PDZ5MmTjRsP6Q0aNDACAwON48eP28p2795tSDLCwsKMixcv2sq/+OILQ5KxatUqp8vPzs42Lly4YFStWtV49913beUrVqwwJBnffvutXf2LFy8awcHBRq9evezKc3JyjDvvvNNo3bq1raxNmzZGeHi48fvvv9vKMjMzjeDgYIf1cuYvf/mLIck4cOCAYRiG8e233xqSjEmTJtnqbN261ZBkjB8/3qV5Gsa17Zjf/2/ixIkFTjd+/HhDkvHDDz/YlT/xxBOGxWIxDh48aLeMuLg4l+MZPHiw7X3eevbs2dOu3vLlyw1JRnJysq2sY8eOhiTjyy+/tKs7fPhwo0KFCsbRo0ft5nnj//Tw4cMObXDUqFEu/4+2b99uSDK++OKLIq3j888/b1gsFmP//v129bp16+YQZ9463rjdmzZtanTr1s3pMrOzs42rV68aQ4cONVq2bFlgPADgDu6AAYAJFi5cqG3bttm9fvjhB9vned0L+/btq+XLl+uXX37xyHJbtGihOnXq2N43adJE0rVuWtffAcorv7574YULFzRu3DjdcsstqlSpkipVqqRq1arp4sWLOnDgQKHL3rJli86ePavBgwc73Dnq3r27tm3bposXL+rixYvatm2bHnzwQbsBM6pXr65evXq5tJ4XLlzQ8uXL1bZtW9tgJx07dlSjRo2UkJBQ6N2qwtx7770O/7+RI0cWOM2GDRvUtGlTtW7d2q58yJAhMgxDGzZscCumG/3xj3+0e9+8eXNJ9v9T6dp2vbHugAEDlJubq40bN3o0phvdcsstuummmzRu3Dh99NFHSklJcWm6pKQkRUVFOQxa88gjj+RbPzQ01GG7N2/e3GFbrFixQu3atVO1atVUqVIlVa5cWfPmzXOpfQNAcTEIBwCYoEmTJgUOwtGhQwd98cUXeu+99zRo0CBlZWXpjjvu0MSJE52eZLoiODjY7r2fn1+B5ZcvX7aVDRgwQN98840mTZqku+++W0FBQbJYLOrZs6ddV0VnTp48KUm2Lmr5OXv2rCwWi3JzcxUaGurweX5l+Vm2bJkuXLigvn376rfffrOV9+3bV/Hx8UpMTFS3bt1Uv359SbLrlugKq9Va5EFUzpw5k++okOHh4bbPPalmzZp27/39/SXJ4X8VEhLiMG3edvZ0TDeyWq1KSkrSX//6V7344os6d+6cwsLCNHz4cL300kuqXLlyvtOdOXNGkZGRDuX5rYvkuC2ka9vj+m2xcuVK9e3bVw8//LCef/55hYaGqlKlSpo9e3a+vx0EAE8hAQOAEqJ3797q3bu3srKytHXrVsXHx2vAgAGKiIhQTEyMqbFkZGRozZo1mjx5ssaPH28rz/vdjCtq1aolSXr//fedjiAYEhKiq1evymKxKD093eHz/MryM2/ePEnS6NGj832G1rx589StWzeFhYWpWbNmWr9+vS5duuSxYeTzU7NmTaWlpTmUnzhxQtL/3z5my0uMr5e3nfMSl7w7kVlZWXb18n77545mzZpp6dKlMgxDe/fuVUJCgqZNm6bAwEC7tna9mjVrFhh3cSxatEiRkZFatmyZ3WAsN64zAHgaXRABoITx9/dXx44d9cYbb0i6NmpcXrnkeEfDGywWiwzDsC0zz9y5cx0GdXAWV7t27VSjRg2lpKSoVatW+b78/PxsozCuXLnS7g7c+fPntXr16kJjPXDggJKTk/XQQw/p22+/dXjdd999+vLLL213dyZNmqRz587p6aeflmEYDvO7cOGC1q9f79qGKsB9992nlJQU7dy506584cKFslgs6ty5s9vLKI7z589r1apVdmWfffaZKlSooA4dOkiS7c7d3r177erdOJ1U/HZpsVh055136p133lGNGjUcttP1OnbsqH379jl0WVy6dGmRlnnj8v38/OySr/T0dEZBBOB13AEDABPs27fPNqLh9Ro1aqSbb75ZL7/8so4fP6777rtPdevW1W+//aZ3331XlStXVseOHW11AwMDtXjxYjVp0kTVqlVTeHi4rUubJwUFBalDhw6aPn26atWqpYiICCUlJWnevHmqUaOGXd2oqChJ0pw5c1S9enUFBAQoMjJSNWvW1Pvvv6/Bgwfr7Nmz6tOnj2rXrq1ff/1Ve/bs0a+//qrZs2dLkl555RV1795dXbt21bPPPqucnBy98cYbqlq1aqF33PLufr3wwgsOv/uRriUc33zzjRYtWqRnnnlGDz/8sCZNmqRXXnlFP/74o4YOHWp7EPMPP/ygjz/+WP369XN7KPoxY8Zo4cKFiouL07Rp09SgQQOtXbtWs2bN0hNPPKHbbrvNrfkXV82aNfXEE08oNTVVt912m9atW6dPPvlETzzxhK2LZmho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EE+fPq2cnByFhITYlYeEhCg9PT3faQ4dOqTx48dr06ZNqlTJtU0QHx+vqVOnuh0vAAAAgPKrzIyCaLFY7N4bhuFQJkk5OTkaMGCApk6dqttuu83l+U+YMEEZGRm217Fjx9yOGQAAAED54tE7YFu3brX9nTcK4sMPP1xgV0B31apVSxUrVnS423Xq1CmHu2KSdP78eW3fvl27du3Sk08+KUnKzc2VYRiqVKmS1q9frz/84Q8O0/n7+8vf3987KwEAAACgXHArAcvMzNRf//pX7dq1S9WqVdO9996rBx98UBEREZLMGQXRz89P0dHRSkxM1J/+9CdbeWJionr37u1QPygoSP/+97/tymbNmqUNGzbo73//uyIjI70aLwAAAIDyy60uiI888ojmzZunm2++WdWqVdP8+fPVuHFjzZgxw1YnICDA7SALM3bsWM2dO1fz58/XgQMHNGbMGKWmpmrEiBGSrnUfHDRokCSpQoUKioqKsnvVrl1bAQEBioqKUtWqVb0eLwAAAIDyqUh3wJYsWaJHHnnE9v7777/XmjVr1L59e1tZcnKy+vbtqypVqtgSIG/r16+fzpw5o2nTpiktLU1RUVFat26dbQCQtLS0Qp8JBgAAAADeZjEMwyisUnp6ukaOHKkaNWpo/vz5tvInn3xSCQkJatu2rVq0aKG77rpLd955pw4dOqQxY8boP//5j1eD96XMzExZrVZlZGQoKCjI1+EAAHzg0pVsNX35a0lSyrRuquLn0Z9WAwBKiaLkBi59U8yZM0fZ2dl2yZckRUdHq0uXLtq5c6d27dqlJUuW6JdffpGfn5+ys7M1cuRINWvWTM2aNdO9995b/DUCAAAAgDLApd+APf3006pRo4Yeeughu/INGzZo0aJFevHFF7V69WodO3ZMv/76q2bNmiVJunDhgubMmePwkGQAAAAAKI9cugNWo0YNLVy4UKtXr7Yrf+utt3TfffcpKipKjz32mFq0aKFLly5pwYIFatGihRYuXCjp2rO3AAAAAKC8K9IoiL169bJ7HxISom3btmnw4MFavny5evXqpX79+unixYv69NNPbfUqVqzomWgBAAAAoBRz+9fCgYGBmjRpkiZNmqTLly8rOztb1apV80RsAAAAAFCmeHS4JjOe+QUAAAAApZVbD2IGAAAAALiOBAwAAAAATEICBgAAAAAmIQEDAAAAAJOQgAEAAACASUjAAAAAAMAkJGAAAAAAYBISMAAAAAAwCQkYAAAAAJiEBAwAAAAATEICBgAAAAAmIQEDAAAAAJOQgAEAAACASUjAAAAAAMAkJGAAAAAAYBISMAAAAAAwCQkYAAAAAJiEBAwAAAAATEICBgAAAAAmKTMJ2KxZsxQZGamAgABFR0dr06ZNTuuuXLlSXbt21c0336ygoCDFxMTo66+/NjFaAAAAAOVRmUjAli1bptGjR2vixInatWuX2rdvrx49eig1NTXf+hs3blTXrl21bt067dixQ507d1avXr20a9cukyMHAAAAUJ5YDMMwfB2Eu9q0aaO77rpLs2fPtpU1adJEDzzwgOLj412axx133KF+/frp5Zdfdql+ZmamrFarMjIyFBQUVKy4AQCl26Ur2Wr68rUeFCnTuqmKXyUfRwQA8IWi5Aal/g7YlStXtGPHDsXGxtqVx8bGasuWLS7NIzc3V+fPn1dwcLDTOllZWcrMzLR7AQAAAEBRlPoE7PTp08rJyVFISIhdeUhIiNLT012ax9tvv62LFy+qb9++TuvEx8fLarXaXvXq1XMrbgAAAADlT6lPwPJYLBa794ZhOJTlZ8mSJZoyZYqWLVum2rVrO603YcIEZWRk2F7Hjh1zO2YAAAAA5Uup76xeq1YtVaxY0eFu16lTpxzuit1o2bJlGjp0qFasWKEuXboUWNff31/+/v5uxwsAAACg/Cr1d8D8/PwUHR2txMREu/LExES1bdvW6XRLlizRkCFD9NlnnykuLs7bYQIAAABA6b8DJkljx47VwIED1apVK8XExGjOnDlKTU3ViBEjJF3rPvjLL79o4cKFkq4lX4MGDdK7776re+65x3b3LDAwUFar1WfrAQAAAKBsKxMJWL9+/XTmzBlNmzZNaWlpioqK0rp169SgQQNJUlpamt0zwT7++GNlZ2dr1KhRGjVqlK188ODBSkhIMDt8AAAAAOVEmXgOmC/wHDAAAM8BAwBI5ew5YAAAAABQWpCAAQAAAIBJSMAAAAAAwCQkYAAAAABgEhIwAAAAADAJCRgAAAAAmIQEDAAAAABMQgIGAAAAACYhAQMAAAAAk5CAAQAAAIBJSMAAAAAAwCQkYAAAAABgEhIwAAAAADAJCRgAAAAAmIQEDAAAAABMQgIGAAAAACYhAQMAAAAAk5CAAQAAAIBJKvk6AADwtJxcQ/86fFanzl9W7eoBah0ZrIoVLL4OCwCKjeMaUHaQgAEoU77al6apq1OUlnHZVhZmDdDkXk3VPSrMh5EBQPFwXAPKFhIwAGXGV/vS9MSinTJuKE/PuKwnFu3U7EfvUveoMLeuJLt7FZqr2EDJ5cv929m0rh7XAJQeJGA+wAmY+Xx5wl1aeXu9PT3/nFxDU1enOJykSJIhySJp6uoU5eZKr6x1fiW5oLhcuQrtzvSlObkrr/tJeVVa21pJ3b+dTTsproleWXug0ONa16ahbh8/vfX/LK/HhtJ8PC+vzNzmFsMw8tuvUYjMzExZrVYl7jqszs0b2P2D3D3AF6Qs79Deis2dbV7Su334cpu5s2xvbNfk/5zRI59sLda0eVH/T4dIrdqTlm9ckvK9Cp037exH75Ikp+tV2PQFLduVbeLtturN45o3Y/P2vC9dyVbTl7+WJKVM66YqfpWKNL03Y/MWbx8f3F12caaVfLd/FzStqydoS4bfo5hGNV2sbc8T+29Bd++8fWwoiec17q63L4/nvuarC+buHtdycg19u/eouraMVEZGhoKCggpcHglYMeUlYPVGL1ed2sG2f5C7B/iCdqySvkO7w1uJqbOuG65sc1en9dUJlrf+n66st+T8RMSVkyB39gNnvtz9i55ZurvI0xUm7ySoRpXK+u3SVad1rFUqK+PSVacnUQVNX9CypcLbmre2aR5PHNdK6l2L4q533rwLSsC8ecHN20mQO21NKv7xoSDuHJMTU9ILTHJ8tX8Xd9obvdu/hXq3qFPk6Txx7HDWFv94Z5jmbDzsteNSQcv2VK+CwhS1rUmunet585haVs8F3Z3W3QswU1en6JdTZ3VsZt/ylYDNmjVL06dPV1pamu644w7NnDlT7du3d1o/KSlJY8eO1f79+xUeHq4XXnhBI0aMcHl51ydgFf2rSLp2hcvZwcaVA3yoNUDfj/uDJPlsh/Ymd77QuzYNLXbXjevLb5y/s20e3eAmdZz+baHTToprWmB3Nne3i9knvTm5hu59Y0OB613QiUhhy5ZU6Pzz/idF/ZJ05w5YSVZYWytKOy/OiUdB+6erx7XC9pPiJhqSe3ctPJHUOkvAvHVc8/Z6F7RsV9qaq8eHonLl2OSsrYUG+etydq7bSU5JVpw7YK5uU2fnJQXtJ4UpynGpuPuoK70KPH3HpLC2Vtg2lVz7jizuMbUkXFh2xlcXzKXCt3lhF2Dy5GZdKl8J2LJlyzRw4EDNmjVL7dq108cff6y5c+cqJSVF9evXd6h/+PBhRUVFafjw4Xr88ce1efNmjRw5UkuWLNFDDz3k0jKvT8Aq/F8CVsEi5bq5Ncd0uU1Lt6X6ZIcu6CDrCm9+oQdUqqj0TO903chvmwdXrayzF4v3Ze3tK4eeOumVHP9nuYahP8/9oWgrXIRl97+7nt7556FC51PYyURBB9H0jMtFPhkorYraRal1ZLBHE3J3eKJrljt3LQpadlGS2qzsHIcEzNULGcU9rnlrvT11THXG1ZPu/Pbvfx0+WyYvsLjLne9vVy9a5fcd6cp+4orCjkvFPXdwxts9OVzlbJu6+h2ZH08d14pz7uDuuaJU/PNUdy+Yu7PNb1TuErA2bdrorrvu0uzZs21lTZo00QMPPKD4+HiH+uPGjdOqVat04MABW9mIESO0Z88eJScnu7TMvASs0ZN/s90B87WnOt+qFTuO2X2hhwYF6OHounr/25+LPf2LPRura9NQ5eQa2n70nH49f1k3Vw9QqwY32Xa4xJR0vbbux3ynlaRnlu726Be6J7tueINFUkhQgP45tqMk5bvdElPS890u3o5LutZdRZLD/6xGYGX99rt3tmdR/t9vPNhMIdbAYrc13bAsT5w8lnaDYhpo/f6TRdq/tx89pyEL/mV6rL7cv4vSVhIea61mdYIU/eo/JUk7XuqiKn6V9MPhs8XabiVhvc1Y9vzBd6tCBUuR9u9ud4To0+SjXo2rpLuxbRZ2PC9s//7ffWl6/u97PRJLcRV0XJI8f+6QN31hFyne7d/C6XaTpC4zkuxi9gRvfk95YptJxW9rhe3f7pynunvB3JPbPCfrkv7zwcDykYBduXJFVapU0YoVK/SnP/3JVv7MM89o9+7dSkpKcpimQ4cOatmypd59911b2eeff66+ffvq0qVLqly5ssM0WVlZysrKsr3PzMxUvXr19K9bblW1ihU9vFYAAAAASosLOTlq/fMhlxKwCibF5DWnT59WTk6OQkJC7MpDQkKUnp6e7zTp6en51s/Oztbp06fznSY+Pl5Wq9X2qlevnmdWAAAAAEC5UWaeA2ax2Pc9NQzDoayw+vmV55kwYYLGjh1re593B+yR7i/buiBWsEiGkf/tzOtveUt0jzJbfl033O3+WN5c30Upv64bxZ2fpyU81lpt/q9PeX6cdYGIaxaq+ZuPSCpeNx/JeffHwqYvaNlF2UaebOd5OK45ur6LcX6/e8jJNdRlRpJOZpbd3yM6a2ueOj4UZ9nFnZfku/3blWV3bRrqNP7idnfNW74Z+683jkulUUk4nqNg7h7XcrIuSR8MdGlZpT4Bq1WrlipWrOhwt+vUqVMOd7nyhIaG5lu/UqVKqlkz/x/++/v7y9/f36H8SiV/Vax0rTxvFEQp/4Ps1L7Of/RZ3B8BlqUd2tOxeOqHl8FV/XT24hW7afN+zOqLAR/M+tK88fdgN/5I351le3rgk+udumpRhSrOf5fZrVVDdbkrMt8fEDe/Nczpj7K7/d+Pj51NK0kzAwKLPb2zZRfW1gpr5z2jQjXv/07+3OHs9ycFHde8uZ+4sh94Ihlwtt4THmypytWq5jtNhf/7PL/9xF1mrbezZRf2I30p/+ODp/ylXYT+d196sfaTggY+8dX+7eqynTl19ZyyKjmem7jq8hVpTPdmbg8I4Ww/cTYghKeOS/kt29cKamuubtPCBj5x95hams4Fzbpg7mybu3reY5GUk5Pjemyl/Tdg0rVBOKKjozVr1ixbWdOmTdW7d2+ng3CsXr1aKSkptrInnnhCu3fvLvIgHEV5DlhBo8dIBY/g5s0d2pMjwBRVQV/oeaM/OjuRKOxERHJt6NHCTmyTnu+sHUfPOR3ONb9le/PKYd56Sd496V08tI0qVLAUa2SqwrZpfiMZpWde1phlu92I+Bp3Hkgq+fZh54UNHSwVvZ17YvQ4Zye9royK5Sz2wri6f0uFPxy3OMv2xGMmChqm2t3jmuSd9XbnmFrQ8cFTA/wUNGqeK/tJQUP/u8JXD4l1xhOP33i3fwvd3zy82N+RxRkS3d3jUmHLzhtJWPLuRYqCvqPza2uSa9vUlaH/b1w3V2J15ZEmvhxJ2N3z1OJcMHdlm0uFPxqkXD4HLG8Y+o8++kgxMTGaM2eOPvnkE+3fv18NGjTQhAkT9Msvv2jhwoWS/v8w9I8//riGDx+u5ORkjRgxoljD0CfuOqzOzRvYHUTdeThecb48JPd26MKmd4e7X+h5zz8raFrJ/aFkC4utoOndvaNZ1CuH7pz0uvLlc317KepQ0UVJFm7k7omEq3GXVsV9yGTekOju7N/FGcLeldgLOkmSXN+/i/MIDFeW7Ynn4XjzuOat9XZl2UVdb0894qKw/bskP2TWGzy1fzu7aOXOxR9XHnFR2EVndy4GuPIsvfzm7Yk7Jq48l7Ww9SqIt45r7pw7uMPd81R3LphLrj+fsKB2npNr6Nu9R9W1ZWT5ScCkaw9ifvPNN5WWlqaoqCi988476tChgyRpyJAhOnLkiL777jtb/aSkJI0ZM8b2IOZx48YV60HMrmzkoijul4cnEglfXaX2xNPNPf0wxaJ8Ybtzd82dB9S6s16S8y8fyf0Hcxdnm3ryC7ms8vTFncJ4MqktzkmSJ/Zvd5ftLSV9vT19t8bM/dsXD5H1JW/v397aT1w5b5HcuxjgzvNJ3b1jUti6e/oih6eOa8U5dyiMJ/Zvb10w9+Txvii5QZlJwMzmrQRMcu8kyxs7nRlXqQvj7S9Ub8zfW1cOi6I4Xz6eOhgVZ73M+EIur9y9YupNvjxhZtnmLZv923u8vX97q7344mLA9Tzdk8MTy/YEb3al9+XddW9cMPfkcY8EzATeTMDcUZaumJYFJb07TEn8n9HWvKck3glC+cL+7T2ldf8uqf/vkr7dfKkk9mgoCUjATFBSEzBvKsmNviRjuxUd28x8bHOYhbZmPrZ58bDdiq48bzMSMBOUxwQMAAAAgKOi5AYVTIoJAAAAAMo9EjAAAAAAMAkJGAAAAACYhAQMAAAAAExCAgYAAAAAJiEBAwAAAACTkIABAAAAgElIwAAAAADAJCRgAAAAAGASEjAAAAAAMAkJGAAAAACYhAQMAAAAAExCAgYAAAAAJiEBAwAAAACTkIABAAAAgElIwAAAAADAJCRgAAAAAGASEjAAAAAAMAkJGAAAAACYhAQMAAAAAExCAgYAAAAAJiEBAwAAAACTlPoE7Ny5cxo4cKCsVqusVqsGDhyo3377zWn9q1evaty4cWrWrJmqVq2q8PBwDRo0SCdOnDAvaAAAAADlUqlPwAYMGKDdu3frq6++0ldffaXdu3dr4MCBTutfunRJO3fu1KRJk7Rz506tXLlSP/30k/74xz+aGDUAAACA8shiGIbh6yCK68CBA2ratKm2bt2qNm3aSJK2bt2qmJgY/fjjj7r99ttdms+2bdvUunVrHT16VPXr13dpmszMTFmtVmVkZCgoKKjY6wAAAACgdCtKblDJpJi8Ijk5WVar1ZZ8SdI999wjq9WqLVu2uJyAZWRkyGKxqEaNGk7rZGVlKSsry24a6drGBgAAAFB+5eUErtzbKtUJWHp6umrXru1QXrt2baWnp7s0j8uXL2v8+PEaMGBAgdlqfHy8pk6d6lBer1491wMGAAAAUGadP39eVqu1wDolMgGbMmVKvsnO9bZt2yZJslgsDp8ZhpFv+Y2uXr2q/v37Kzc3V7NmzSqw7oQJEzR27Fjb+9zcXJ09e1Y1a9Z0aVm4JjMzU/Xq1dOxY8fougmvoq3BLLQ1mIW2BrPQ1orOMAydP39e4eHhhdYtkQnYk08+qf79+xdYJyIiQnv37tXJkycdPvv1118VEhJS4PRXr15V3759dfjwYW3YsKHQxuXv7y9/f3+7soK6LKJgQUFB7NAwBW0NZqGtwSy0NZiFtlY0hd35ylMiE7BatWqpVq1ahdaLiYlRRkaG/vWvf6l169aSpB9++EEZGRlq27at0+nykq9Dhw7p22+/Vc2aNT0WOwAAAAA4U6qHoW/SpIm6d++u4cOHa+vWrdq6dauGDx+u+++/324AjsaNG+vzzz+XJGVnZ6tPnz7avn27Fi9erJycHKWnpys9PV1Xrlzx1aoAAAAAKAdKdQImSYsXL1azZs0UGxur2NhYNW/eXH/729/s6hw8eNA2auHx48e1atUqHT9+XC1atFBYWJjttWXLFl+sQrni7++vyZMnO3TnBDyNtgaz0NZgFtoazEJb865S/RwwAAAAAChNSv0dMAAAAAAoLUjAAAAAAMAkJGAAAAAAYBISMAAAAAAwCQkYTJeVlaUWLVrIYrFo9+7ddp+lpqaqV69eqlq1qmrVqqWnn36axwOgSI4cOaKhQ4cqMjJSgYGBatSokSZPnuzQjmhr8IRZs2YpMjJSAQEBio6O1qZNm3wdEkq5+Ph43X333apevbpq166tBx54QAcPHrSrYxiGpkyZovDwcAUGBqpTp07av3+/jyJGWREfHy+LxaLRo0fbymhr3kECBtO98MILCg8PdyjPyclRXFycLl68qO+//15Lly7VP/7xDz377LM+iBKl1Y8//qjc3Fx9/PHH2r9/v9555x199NFHevHFF211aGvwhGXLlmn06NGaOHGidu3apfbt26tHjx5KTU31dWgoxZKSkjRq1Cht3bpViYmJys7OVmxsrC5evGir8+abb2rGjBn64IMPtG3bNoWGhqpr1646f/68DyNHabZt2zbNmTNHzZs3tyunrXmJAZho3bp1RuPGjY39+/cbkoxdu3bZfVahQgXjl19+sZUtWbLE8Pf3NzIyMnwQLcqKN99804iMjLS9p63BE1q3bm2MGDHCrqxx48bG+PHjfRQRyqJTp04ZkoykpCTDMAwjNzfXCA0NNV5//XVbncuXLxtWq9X46KOPfBUmSrHz588bt956q5GYmGh07NjReOaZZwzDoK15E3fAYJqTJ09q+PDh+tvf/qYqVao4fJ6cnKyoqCi7u2PdunVTVlaWduzYYWaoKGMyMjIUHBxse09bg7uuXLmiHTt2KDY21q48NjZWW7Zs8VFUKIsyMjIkyXYMO3z4sNLT0+3anr+/vzp27EjbQ7GMGjVKcXFx6tKli105bc17Kvk6AJQPhmFoyJAhGjFihFq1aqUjR4441ElPT1dISIhd2U033SQ/Pz+lp6ebFCnKmv/85z96//339fbbb9vKaGtw1+nTp5WTk+PQjkJCQmhD8BjDMDR27Fjde++9ioqKkiRb+8qv7R09etT0GFG6LV26VDt37tS2bdscPqOteQ93wOCWKVOmyGKxFPjavn273n//fWVmZmrChAkFzs9isTiUGYaRbznKF1fb2vVOnDih7t276+GHH9awYcPsPqOtwRNubC+0IXjSk08+qb1792rJkiUOn9H24K5jx47pmWee0aJFixQQEOC0Hm3N87gDBrc8+eST6t+/f4F1IiIi9Oqrr2rr1q3y9/e3+6xVq1b685//rE8//VShoaH64Ycf7D4/d+6crl696nD1BeWPq20tz4kTJ9S5c2fFxMRozpw5dvVoa3BXrVq1VLFiRYe7XadOnaINwSOeeuoprVq1Shs3blTdunVt5aGhoZKu3Z0ICwuzldP2UFQ7duzQqVOnFB0dbSvLycnRxo0b9cEHH9hG36SteR4JGNxSq1Yt1apVq9B67733nl599VXb+xMnTqhbt25atmyZ2rRpI0mKiYnRX//6V6Wlpdl29PXr18vf39/u4IDyydW2Jkm//PKLOnfurOjoaC1YsEAVKtjf7KetwV1+fn6Kjo5WYmKi/vSnP9nKExMT1bt3bx9GhtLOMAw99dRT+vzzz/Xdd98pMjLS7vPIyEiFhoYqMTFRLVu2lHTtN4lJSUl64403fBEySqn77rtP//73v+3KHnvsMTVu3Fjjxo1Tw4YNaWteQgIGU9SvX9/ufbVq1SRJjRo1sl3Zi42NVdOmTTVw4EBNnz5dZ8+e1XPPPafhw4crKCjI9JhROp04cUKdOnVS/fr19dZbb+nXX3+1fZZ35Zi2Bk8YO3asBg4cqFatWtnutKampmrEiBG+Dg2l2KhRo/TZZ5/pyy+/VPXq1W13Wa1WqwIDA23PaXrttdd066236tZbb9Vrr72mKlWqaMCAAT6OHqVJ9erVbb8tzFO1alXVrFnTVk5b8w4SMJQYFStW1Nq1azVy5Ei1a9dOgYGBGjBggN566y1fh4ZSZP369fr555/1888/23Xbka5dWZZoa/CMfv366cyZM5o2bZrS0tIUFRWldevWqUGDBr4ODaXY7NmzJUmdOnWyK1+wYIGGDBki6drzNH///XeNHDlS586dU5s2bbR+/XpVr17d5GhR1tHWvMNi5J2RAAAAAAC8ilEQAQAAAMAkJGAAAAAAYBISMAAAAAAwCQkYAAAAAJiEBAwAAAAATEICBgAAAAAmIQEDAAAAAJOQgAEAAACASUjAAAAAAMAkJGAAAAAAYBISMAAAAAAwCQkYAADF8Ntvv8lisWjz5s2SpJ9//lm33367xo8fL8MwfBwdAKCkIgEDAKAY9uzZI4vFoubNm+v7779Xhw4dNH78eL3++uuyWCy+Dg8AUEJV8nUAAACURnv27FGjRo20evVqPfvss/rss8/UuXNnX4cFACjhuAMGAEAx7NmzR+np6Ro8eLBq166tTp06+TokAEApQAIGAEAx7NmzR61atVJSUpL+/e9/6x//+IevQwIAlAIWg18KAwBQJDk5OapWrZqWLVumP/7xj+rbt69SUlK0d+9eVajAtU0AgHN8SwAAUEQHDx7U5cuX1aJFC0nSyy+/rJSUFC1fvty3gQEASjwSMAAAimjPnj2qUaOG6tevL0mKiorSgw8+qKlTpyonJ8fH0QEASjK6IAIAAACASbgDBgAAAAAmIQEDAAAAAJOQgAEAAACASUjAAAAAAMAkJGAAAAAAYBISMAAAAAAwCQkYAAAAAJiEBAwAAAAATEICBgAAAAAmIQEDAAAAAJOQgAEAAACASf4fcy6bXmrwl+gAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1UAAAE6CAYAAAD+wnhgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABH7ElEQVR4nO3deXgUVb7/8U+HJQmSNARI0siSgA4SAoIsGlFAkX0yesVdcBn1XhZX5IKgyOISHZgRN4IoELkZAb1BBWEYGIWgIwjIJgS4Or8gCB2RxSREE0hSvz8wPWm6O+n0ku5O3q/n6edJnzrV9a3qSnV965w6ZTIMwxAAAAAAwCNhgQ4AAAAAAEIZSRUAAAAAeIGkCgAAAAC8QFIFAAAAAF4gqQIAAAAAL5BUAQAAAIAXSKoAAAAAwAskVQAAAADgBZIqAAAAAPACSRUAuJCRkSGTyeTytXHjRrc/69ixY5oxY4Z27drlMG3GjBkymUy+C7wGcnJyNGPGDB06dMjnn+3Jet18880ymUx6+OGHq6z3+eef67bbbtPFF1+sxo0by2w26+qrr1Z6erqKiops9RISElx+f2fOnPFovS506NAhjRgxQjExMTKZTHr88cd98rnu8Of358yaNWs0Y8YMn35mQkKC7rvvPp9+pjeCLR4AoaFhoAMAgGC3ePFiXXbZZQ7lSUlJbn/GsWPHNHPmTCUkJKh79+520x588EENHTrU2zA9kpOTo5kzZ2rAgAFKSEgISAwVjh8/rk8++USS9Ne//lVz5sxRRESEQ73p06dr1qxZuvrqq/Xcc8+pY8eO+uWXX/Tll19qxowZ+r//+z+98sortvp9+/bVnDlzHD6nSZMmPon7iSee0FdffaVFixYpPj5eFovFJ5/rjtr+/tasWaM333zTp4nVhx9+qOjoaJ99HgAEAkkVAFQjOTlZvXr18tvnt2nTRm3atPHb54eKJUuW6Ny5cxoxYoRWr16tFStW6K677rKr88EHH2jWrFl64IEH9Pbbb9u1hA0bNkyTJk3S5s2b7eZp1qyZrrrqKr/FvXfvXvXp00c33XST35ZRl/Xo0SPQIQCA1+j+BwA+8MEHH+jKK6+U2WxWkyZN1KFDB/3xj3+UJG3cuFG9e/eWJN1///227mcVV/uddZNLSEjQ73//e33yySfq0aOHIiMj1blzZ1tLTkZGhjp37qyLLrpIffr00fbt2+3m3759u+644w4lJCQoMjJSCQkJuvPOO/X999/b6mRkZOjWW2+VJF133XW2uDIyMmx1/vGPf2jgwIGKjo5WkyZN1LdvX3366acO67969Wp1795d4eHhSkxMdNoyVJ1FixYpLi5O7777riIjI7Vo0SKHOrNmzVLz5s312muvOe1aGBUVpcGDB9d42c4cPnxYo0aNUmxsrMLDw9W5c2f9+c9/Vnl5uaTz36vJZNJ3332nv/3tb7btV1VXvOLiYk2ZMkWJiYlq3LixLr74Yo0fP14///yzXb3K+0dllbumVff9DRgwQMnJyfr888911VVXKTIyUhdffLGmTZumsrIy22dWrMeF3VkPHTpk93n33Xef3nzzTVt87qzvzp079fvf/962DVu3bq0RI0bohx9+cLpOFfbt26fBgwerSZMmatWqlcaPH6/Vq1c7xFmxjtu2bdO1115r+9976aWXbN9TxXZ/8skn1b17d5nNZsXExCglJUUff/yxy9gBoCZIqgCgGmVlZSotLbV7VT4p3bx5s26//XZ16NBBy5Yt0+rVq/Xss8+qtLRUknTFFVdo8eLFkqRnnnlGmzdv1ubNm/Xggw9Wudzdu3drypQpmjx5slasWCGz2aybb75Z06dP1zvvvKMXX3xRf/3rX5Wfn6/f//73+vXXX23zHjp0SJ06ddLcuXP197//XS+//LKsVqt69+6tEydOSJJGjBihF198UZL05ptv2uIaMWKEJCkzM1ODBw9WdHS03n33Xb3//vuKiYnRkCFD7BKrTz/9VDfeeKOioqK0bNkyzZ49W++//75tnd3x5Zdfav/+/brnnnvUokULjRw5Up999plyc3NtdaxWq/bu3Ws72XaXYRgO31/lE25nfvrpJ1199dVat26dnnvuOa1cuVI33HCDJk6caLvf64orrtDmzZsVHx+vvn372rafq+5/hmHopptu0pw5czR69GitXr1aEyZM0Lvvvqvrr79eJSUlbq+TVP33J0l5eXm64447dPfdd+vjjz/WLbfcoueff16PPfZYjZYlSdOmTdMtt9wiSbZlVbW+RUVFGjRokH788Ue9+eabWr9+vebOnat27dqpsLDQ5XKsVqv69++vgwcPKj09XUuWLFFhYaHL++zy8vJ09913a9SoUVq5cqWGDRumKVOmKDMz01anpKREp06d0sSJE/XRRx9p6dKluuaaa3TzzTdryZIlNd4WAODAAAA4tXjxYkOS01eDBg1s9ebMmWNIMn7++WeXn7Vt2zZDkrF48WKHadOnTzcuPBy3b9/eiIyMNH744Qdb2a5duwxJhsViMYqKimzlH330kSHJWLlypcvll5aWGmfOnDEuuugi49VXX7WVf/DBB4YkY8OGDXb1i4qKjJiYGCM1NdWuvKyszLj88suNPn362MquvPJKo3Xr1savv/5qKysoKDBiYmIc1suVP/7xj4YkY//+/YZhGMaGDRsMSca0adNsdbZs2WJIMp566im3PtMwzm9HZ9/f008/XeV8Tz31lCHJ+Oqrr+zKx44da5hMJuPgwYN2yxgxYkS1saxdu9aQZPzpT3+yK1++fLkhyViwYIGtTJIxffp0p+tz77332t67+v4MwzD69+9vSDI+/vhju/KHHnrICAsLM77//nvDMP69rS/8jNzcXId9dvz48W5/p9u3bzckGR999FGV9S5cp//+7/82TCaTsW/fPrt6Q4YMcYizYh0v/J6SkpKMIUOGuFxmaWmpce7cOeOBBx4wevToUWU8AOAOWqoAoBpLlizRtm3b7F5fffWVbXpF177bbrtN77//vo4ePeqT5Xbv3l0XX3yx7X3nzp0lne/yVLmlpqK8cte+M2fOaPLkybrkkkvUsGFDNWzYUE2bNlVRUZH2799f7bK//PJLnTp1Svfee69DC8/QoUO1bds2FRUVqaioSNu2bdPNN99sN6hEVFSUUlNT3VrPM2fO6P3339fVV19tGxCkf//+6tixozIyMqptVarONddc4/D9jRs3rsp5PvvsMyUlJalPnz525ffdd58Mw9Bnn31W4zgq5rmwq9utt96qiy66yGm3Sm9FRUXpD3/4g13ZXXfdpfLycm3atMnny6vskksuUfPmzTV58mTNnz9fOTk5bs2XnZ2t5ORkh4Fg7rzzTqf14+PjHb6nbt262f0/SOe76Pbt21dNmzZVw4YN1ahRIy1cuNCt/wcAqA4DVQBANTp37lzlQBX9+vXTRx99pNdee0333HOPSkpK1KVLFz399NMuTwTdERMTY/e+cePGVZYXFxfbyu666y59+umnmjZtmnr37q3o6GiZTCYNHz7crpugKz/++KMk2bp7OXPq1CmZTCaVl5crPj7eYbqzMmeWL1+uM2fO6LbbbrO7t+i2225TWlqa1q9fryFDhqhdu3aSZNcl0B1ms7nGA42cPHnS6Wh6rVu3tk2vqZMnT6phw4Zq1aqVXbnJZFJ8fLxHn1mduLg4h7KK78Ufy6vMbDYrOztbL7zwgqZOnarTp0/LYrHooYce0jPPPKNGjRo5ne/kyZNKTEx0KHe2LpLUokULh7Lw8HC7/XzFihW67bbbdOutt+q///u/FR8fr4YNGyo9Pd3pvXsAUFMkVQDgAzfeeKNuvPFGlZSUaMuWLUpLS9Ndd92lhIQEpaSk1Gos+fn5+uSTTzR9+nQ99dRTtvKK+0rc0bJlS0nS66+/7nLkvLi4OJ07d04mk0l5eXkO052VObNw4UJJ0uOPP+70GU8LFy7UkCFDZLFY1LVrV61bt06//PKLz4ZEd6ZFixayWq0O5ceOHZP07+1T088sLS3VTz/9ZJdYGYahvLw8W4undD4pcHaPVU0ToYrkuLKK76UiGaloYbxweRX33nmja9euWrZsmQzD0J49e5SRkaFZs2YpMjLSbt+srEWLFlXG7YnMzEwlJiZq+fLldgOc1PQ+NgBwhe5/AOBD4eHh6t+/v15++WVJ50c/qyiX5FYrkbdMJpMMw7Ats8I777xjN8BGVXH17dtXzZo1U05Ojnr16uX01bhxY9vogytWrLBrKSssLNSqVauqjXX//v3avHmzRo4cqQ0bNji8Bg4cqI8//tiWTEybNk2nT5/Wo48+KsMwHD7vzJkzWrdunXsbqgoDBw5UTk6OduzYYVe+ZMkSmUwmXXfddR59piS7ARQkKSsrS0VFRbbp0vkR8fbs2WNX77PPPnN4YHF1+1VhYaFWrlxpV/bee+8pLCxM/fr1sy1LksPyLpzPneW5YjKZdPnll+uVV15Rs2bNHLZrZf3799fevXsdugsuW7asRsu8cPmNGze2S6jy8vIY/Q+Az9BSBQDV2Lt3r20kv8o6duyoVq1a6dlnn9UPP/yggQMHqk2bNvr555/16quvqlGjRurfv7+tbmRkpP7617+qc+fOatq0qVq3bm3rTuZL0dHR6tevn2bPnq2WLVsqISFB2dnZWrhwoZo1a2ZXNzk5WZK0YMECRUVFKSIiQomJiWrRooVef/113XvvvTp16pRuueUWxcbG6qefftLu3bv1008/KT09XZL03HPPaejQoRo0aJCefPJJlZWV6eWXX9ZFF11UbctYRSvVpEmTHO6Lkc4nBZ9++qkyMzP12GOP6dZbb9W0adP03HPP6cCBA3rggQdsD//96quv9NZbb+n222/3elj1J554QkuWLNGIESM0a9YstW/fXqtXr9a8efM0duxY/e53v6vxZw4aNEhDhgzR5MmTVVBQoL59+2rPnj2aPn26evToodGjR9vqjh49WtOmTdOzzz6r/v37KycnR2+88YbMZrPdZ1b1/UnnW33Gjh2rw4cP63e/+53WrFmjt99+W2PHjrV1p4yPj9cNN9ygtLQ0NW/eXO3bt9enn36qFStWOKxD165dJUkvv/yyhg0bpgYNGqhbt262LqiVffLJJ5o3b55uuukmdejQQYZhaMWKFfr55581aNAgl9vp8ccf16JFizRs2DDNmjVLcXFxeu+993TgwAFJUlhYza8H//73v9eKFSs0btw43XLLLTpy5Iiee+45WSwWffvttzX+PABwEMhRMgAgmFU1+p8k4+233zYMwzA++eQTY9iwYcbFF19sNG7c2IiNjTWGDx9ufP7553aft3TpUuOyyy4zGjVqZDe6m6vR/5yNKCfJGD9+vF1ZxShts2fPtpX98MMPxsiRI43mzZsbUVFRxtChQ429e/c6Hdls7ty5RmJiotGgQQOH0d6ys7ONESNGGDExMUajRo2Miy++2BgxYoTxwQcf2H3GypUrjW7duhmNGzc22rVrZ7z00ktO16uys2fPGrGxsUb37t1d1iktLTXatGljdO3a1a48OzvbuOWWWwyLxWI0atTIiI6ONlJSUozZs2cbBQUF1W5Hd3z//ffGXXfdZbRo0cJo1KiR0alTJ2P27NlGWVmZXb2aLOPXX381Jk+ebLRv395o1KiRYbFYjLFjxxqnT5+2q1dSUmJMmjTJaNu2rREZGWn079/f2LVrV42+v/79+xtdunQxNm7caPTq1csIDw83LBaLMXXqVOPcuXN2n2G1Wo1bbrnFiImJMcxmszFq1Cjb6H2V94eSkhLjwQcfNFq1amWYTCZDkpGbm+t0XQ8cOGDceeedRseOHY3IyEjDbDYbffr0MTIyMhy234XrtHfvXuOGG24wIiIijJiYGOOBBx4w3n33XUOSsXv3blu9inW80L333mu0b9/eruyll14yEhISjPDwcKNz587G22+/7fJ/j9H/ANSUyTCc9J8AAAAhbcCAATpx4oT27t0b6FB8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amz8+PEaMWKEbrjhBrty9jP/aRjoABC6DMPQfffdpzFjxqhXr146dOiQQ528vDzFxcXZlTVv3lyNGzdWXl5eLUWKuuZf//qXXn/9df35z3+2lbGvwRdOnDihsrIyh30pLi6O/Qg+YxiGJkyYoGuuuUbJycmSZNu/nO1733//fa3HiNC1bNky7dixQ9u2bXOYxn7mP7RUwcGMGTNkMpmqfG3fvl2vv/66CgoKNGXKlCo/z2QyOZQZhuG0HPWLu/taZceOHdPQoUN166236sEHH7Sbxr4GX7lwn2E/gi89/PDD2rNnj5YuXeowjX0P3jhy5Igee+wxZWZmKiIiwmU99jPfo6UKDh5++GHdcccdVdZJSEjQ888/ry1btig8PNxuWq9evXT33Xfr3XffVXx8vL766iu76adPn9a5c+ccrpKg/nF3X6tw7NgxXXfddUpJSdGCBQvs6rGvwRdatmypBg0aOLRKHT9+nP0IPvHII49o5cqV2rRpk9q0aWMrj4+Pl3S+JcFisdjK2fdQE19//bWOHz+unj172srKysq0adMmvfHGG7YRJ9nPfI+kCg5atmypli1bVlvvtdde0/PPP297f+zYMQ0ZMkTLly/XlVdeKUlKSUnRCy+8IKvVavvnXbduncLDw+3+4VE/ubuvSdLRo0d13XXXqWfPnlq8eLHCwuwb2tnX4AuNGzdWz549tX79ev3Hf/yHrXz9+vW68cYbAxgZQp1hGHrkkUf04YcfauPGjUpMTLSbnpiYqPj4eK1fv149evSQdP4ev+zsbL388suBCBkhaODAgfrmm2/syu6//35ddtllmjx5sjp06MB+5ickVfBYu3bt7N43bdpUktSxY0fb1bfBgwcrKSlJo0eP1uzZs3Xq1ClNnDhRDz30kKKjo2s9ZoSmY8eOacCAAWrXrp3mzJmjn376yTat4uou+xp8ZcKECRo9erR69eplaxU9fPiwxowZE+jQEMLGjx+v9957Tx9//LGioqJsraFms1mRkZG2Zwm9+OKLuvTSS3XppZfqxRdfVJMmTXTXXXcFOHqEiqioKNt9ehUuuugitWjRwlbOfuYfJFXwqwYNGmj16tUaN26c+vbtq8jISN11112aM2dOoENDCFm3bp2+++47fffdd3bdZaTzV38l9jX4zu23366TJ09q1qxZslqtSk5O1po1a9S+fftAh4YQlp6eLkkaMGCAXfnixYt13333STr/zMdff/1V48aN0+nTp3XllVdq3bp1ioqKquVoUZexn/mHyag4IwEAAAAA1Bij/wEAAACAF0iqAAAAAMALJFUAAAAA4AWSKgAAAADwAkkVAAAAAHiBpAoAAAAAvEBSBQAAAABeIKkCAAAAAC+QVAEAAACAF0iqAAAAAMALJFUAAAAA4AWSKgAAfvPzzz/LZDLpn//8pyTpu+++U6dOnfTUU0/JMIwARwcACFYkVQAA/Gb37t0ymUzq1q2bvvjiC/Xr109PPfWUXnrpJZlMpkCHBwAIUg0DHQAAAMFi9+7d6tixo1atWqUnn3xS7733nq677rpAhwUACHK0VAEA8Jvdu3crLy9P9957r2JjYzVgwIBAhwQACAEkVQAA/Gb37t3q1auXsrOz9c033ygrKyvQIQEAQoDJ4M5bAABUVlampk2bavny5frDH/6g2267TTk5OdqzZ4/CwrgGCQBwjV8JAAAkHTx4UMXFxerevbsk6dlnn1VOTo7ef//9wAYGAAh6JFUAAOh8179mzZqpXbt2kqTk5GTdfPPNmjlzpsrKygIcHQAgmNH9DwAAAAC8QEsVAAAAAHiBpAoAAAAAvEBSBQAAAABeIKkCAAAAAC+QVAEAAACAF0iqAAAAAMALJFUAAAAA4AWSKgAAAADwAkkVAAAAAHiBpAoAAAAAvEBSBQAAAABe+P9XyULDvH5PkgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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yNW/Q5mEOYg9kjDAum4BTf3gJWOm3pP07DynFXmRuqeqPBQGlZmaUksXERERka0xCXMQeyVh9WGiRIB195PZoqLVoM7hPA6JiIiIbmES5iDOSsKIJJZUXgRY0YqIiIjI1piEOQiTMGrMeA8gERERkeMwCXMQJmHU2PEeQCIiIiLHMDc38HBgTETkBAq5DEltgy0eT0RERES2JXd2AERERERERO6ESRgREREREZEDMQkjIiIiIiJyICZhREREREREDsQkjIiIiIiIyIGYhBERERERETkQkzAiIiIiIiIHYhJGRERERETkQEzCiIiIiIiIHIhJGBERERERkQMxCSMiIiIiInIgJmFEREREREQOxCSMiIiIiIjIgZiEERERERERORCTMCIiIiIiIgdiEkZERERERORATMKIiIiIiIgciEkYERERERGRAzEJIyIiIiIiciAmYURERERERA7EJIyIiIiIiMiBmIQRERERERE5kMskYdeuXcOYMWOgVquhVqsxZswY/Pnnn7VOX1FRgZdffhldunSBr68vIiMj8cQTTyA3N9dxQRMRERERkdtxmSRs1KhRyMrKwubNm7F582ZkZWVhzJgxtU5/48YNHDx4EK+99hoOHjyIdevW4ffff8eDDz7owKiJiIiIiMjdyIQQwtlBWOv48ePo3Lkz9u7di549ewIA9u7di6SkJPz222/o0KGDWcvZv38/evTogXPnzqFVq1ZmzVNUVAS1Wo3CwkIEBARYvA1ERERERNS0mZsbeDgwJrvZs2cP1Gq1PgEDgF69ekGtVmP37t1mJ2GFhYWQyWQIDAysdZqysjKUlZUZzANU7XAiIiIiInJfUk5QXzuXSyRheXl5CA0NNRoeGhqKvLw8s5ZRWlqKGTNmYNSoUXVmrfPmzcOcOXOMhrds2dL8gImIiIiIyGUVFxdDrVbXOr5RJ2GzZ882mfBUt3//fgCATCYzGieEMDm8poqKCowcORI6nQ5Lliypc9qZM2di+vTp+tc6nQ4FBQUIDg42a11U9QtBy5Ytcf78eXbhJLvisUaOwmONHIXHGjkKjzXLCCFQXFyMyMjIOqdr1EnYM888g5EjR9Y5TevWrXH48GFcunTJaNyVK1cQFhZW5/wVFRV47LHHcObMGWzdurXeg8zLywteXl4Gw+rqvki1CwgI4IeaHILHGjkKjzVyFB5r5Cg8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LS0N165dQ8+ePfHjjz/C39/fwdGSq+OxZh8yIV2REBERERERkd2xOiIREREREZEDMQkjIiIiIiJyICZhREREREREDsQkjIiIiIiIyIGYhBERERERETkQkzAiIiIiIiIHYhJGRERERETkQEzCiIiIiIiIHIhJGBERERERkQMxCSMiIiIiInIgJmFEREREREQOxCSMiIjIQn/++SdkMhl27doFADh16hQ6dOiAGTNmQAjh5OiIiKixYhJGRERkoUOHDkEmk6Fr16745Zdf0LdvX8yYMQNvvfUWZDKZs8MjIqJGysPZARARETVVhw4dQtu2bbFhwwa88MIL+OKLLzBgwABnh0VERI0cW8KIiIgsdOjQIeTl5WHs2LEIDQ1F//79nR0SERE1AUzCiIiILHTo0CEkJiZix44dOHLkCL755htnh0RERE2ATPDOYSIiogbTarXw8/PD2rVr8eCDD+Kxxx5DdnY2Dh8+DLmcv3ESEVHt+C1BRERkgRMnTqC0tBRxcXEAgNdffx3Z2dn46quvnBsYERE1ekzCiIiILHDo0CEEBgaiVatWAIDY2Fg88sgjmDNnDrRarZOjIyKixozdEYmIiIiIiByILWFEREREREQOxCSMiIiIiIjIgZiEERERERERORCTMCIiIiIiIgdiEkZERERERORATMKIiIiIiIgciEkYERERERGRAzEJIyIiIiIiciAmYURERERERA7EJIyIiIiIiMiBmIQRERERERE50P8HEFRjqznhmigAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import scipy.signal as sig\n",
    "\n",
    "N = 10000  # number of samples for input signal\n",
    "K = 50  # limit for lags in ACF\n",
    "\n",
    "# generate input signal\n",
    "# normally distributed (zero-mean, unit-variance) white noise\n",
    "np.random.seed(5)\n",
    "x = np.random.normal(size=N)\n",
    "# impulse response of the system\n",
    "h = np.concatenate((np.zeros(10), sig.windows.triang(10), np.zeros(10)))\n",
    "# output signal by convolution\n",
    "y = np.convolve(h, x, mode=\"full\")\n",
    "\n",
    "\n",
    "def compute_correlation_function(x, y):\n",
    "    \"\"\"Compute correlation function/kappa.\"\"\"\n",
    "    N, M = len(x), len(y)\n",
    "    ccf = 1 / N * np.correlate(x, y, mode=\"full\")\n",
    "    kappa = np.arange(-M + 1, N)\n",
    "\n",
    "    return ccf, kappa\n",
    "\n",
    "\n",
    "def plot_correlation_function(cf, kappa):\n",
    "    \"\"\"Plot correlation function.\"\"\"\n",
    "    plt.stem(kappa, cf)\n",
    "    plt.xlabel(r\"$\\kappa$\")\n",
    "    plt.axis([-K, K, -0.2, 1.1 * max(cf)])\n",
    "\n",
    "\n",
    "# compute correlation functions\n",
    "acfx, kappax = compute_correlation_function(x, x)\n",
    "acfy, kappay = compute_correlation_function(y, y)\n",
    "ccfyx, kappayx = compute_correlation_function(y, x)\n",
    "\n",
    "# plot ACFs and CCF\n",
    "plt.rc(\"figure\", figsize=(10, 3))\n",
    "plt.figure()\n",
    "plot_correlation_function(acfx, kappax)\n",
    "plt.title(\"Estimated ACF of input signal\")\n",
    "plt.ylabel(r\"$\\hat{\\varphi}_{xx}[\\kappa]$\")\n",
    "\n",
    "plt.figure()\n",
    "plot_correlation_function(acfy, kappay)\n",
    "plt.title(\"Estimated ACF of output signal\")\n",
    "plt.ylabel(r\"$\\hat{\\varphi}_{yy}[\\kappa]$\")\n",
    "\n",
    "plt.figure()\n",
    "plot_correlation_function(ccfyx, kappayx)\n",
    "plt.plot(np.arange(len(h)), h, \"g-\")\n",
    "plt.title(\"Estimated and true impulse response\")\n",
    "plt.ylabel(r\"$\\hat{\\varphi}_{yx}[k]$, $h[k]$\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise**\n",
    "\n",
    "* Why is the estimated CCF $\\hat{\\varphi}_{yx}[k]$ not exactly equal to the true impulse response $h[k]$ of the system?\n",
    "* What changes if you change the number of samples `N` of the input signal?\n",
    "\n",
    "Solution: The derived relations for system identification hold for the case of a wide-sense ergodic input signal of infinite duration. Since we can only numerically simulate signals of finite duration, the observed deviations are a result of the resulting statistical uncertainties. Increasing the length `N` of the input signal improves the estimate of the impulse response."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "nbsphinx": "hidden"
   },
   "source": [
    "**Copyright**\n",
    "\n",
    "This notebook is provided as [Open Educational Resource](https://en.wikipedia.org/wiki/Open_educational_resources). Feel free to use the notebook for your own purposes. The text is licensed under [Creative Commons Attribution 4.0](https://creativecommons.org/licenses/by/4.0/), the code of the IPython examples under the [MIT license](https://opensource.org/licenses/MIT). Please attribute the work as follows: *Sascha Spors, Digital Signal Processing - Lecture notes featuring computational examples*."
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
